package picard.util;
import com.google.common.base.Optional;
import java.util.Iterator;
/**
* @author mccowan
*/
public class Iterators {
public static <E> AtomicIterator<E> atomicIteratorOf(final Iterable<E> backingIterable) {
return atomicIteratorOf(backingIterable.iterator());
}
public static <E> AtomicIterator<E> atomicIteratorOf(final Iterator<E> backingIterator) {
final Object monitor = new Object();
return new AtomicIterator<E>() {
@Override
public Optional<E> next() {
synchronized (monitor) {
return backingIterator.hasNext() ? Optional.fromNullable(backingIterator.next()) : Optional.<E>absent();
}
}
};
}
}